﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Net.Mail;
using System.Net;

public partial class Avaliador_ConvidarAvaliadorAE : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Usuario"] == null || Session["TipoUsuario"] == null)
            Response.Redirect("../Login.aspx");
        if (Session["Evento"] == null)
            Response.Redirect("../DefaultAG.aspx");
        if (Session["TipoUsuario"].ToString() != "Administrador Geral")
            Response.Redirect("../Default.aspx");
    }
    [WebMethod]
    public static Resultado<Usuario> getUsuarios(int pagina, string nome)
    {
        int i = (pagina - 1) * 4;
        DataClassesDataContext dc = new DataClassesDataContext();
        Resultado<Usuario> retorno = new Resultado<Usuario>();
        retorno.Data = dc.Usuarios.Where(p => p.Pessoa.nome.Contains(nome)).OrderBy(p => p.Pessoa.nome).Skip(i).Take(4).ToList();
        retorno.TotalCount = dc.Usuarios.Where(p => p.Pessoa.nome.Contains(nome)).Count();
        return retorno;
    }
    [WebMethod]
    public static string existeUsuario(string email)
    {
        if (Usuario.exist(email))
        {
            string teste = Usuario.findByEmail(email).Pessoa.nome;
            return Usuario.findByEmail(email).Pessoa.nome;
        }
        else
            return "nao";
    }
    [WebMethod]
    public static bool convidarAvaliador(string nome, string instituicao, string curso, string email, string comentario)
    {
        bool retorno = false;
        Pessoa pessoa = new Pessoa();
        pessoa.nome = nome;
        pessoa.id = Guid.NewGuid();
        pessoa.instituicao = instituicao;
        pessoa.curso = curso;
        pessoa.dataCadastro = DateTime.Now;
        if (Pessoa.createPessoa(pessoa))
        {
            Usuario usuario = new Usuario();
            usuario.email = email;
            usuario.login = Usuario.createLogin(nome);
            usuario.senha = "1234";
            usuario.id = Guid.NewGuid();
            usuario.IdPessoa = pessoa.id;
            usuario.confirmado = false;
            usuario.idTipoUsuario = new Guid("70906a13-fec3-41ca-aefe-8df91c3a5087");
            if (Usuario.createUsuario(usuario))
            {
                Evento evento = Evento.findEventoById(new Guid(System.Web.HttpContext.Current.Session["Evento"].ToString()));
                Avaliador avaliador = new Avaliador();
                avaliador.aceito = false;
                avaliador.id = Guid.NewGuid();
                avaliador.idEvento = evento.id;
                avaliador.idPessoa = pessoa.id;
                avaliador.status = false;
                if (Avaliador.createAvaliador(avaliador))
                {
                    EnviarEmail(usuario.email, usuario.id.ToString(), avaliador.id.ToString(), usuario.Pessoa.nome, "Convite para Avaliador", evento.id.ToString(), evento.titulo, comentario);
                    retorno = true;
                }
            }
            else
                retorno = false;
        }
        return retorno;
    }
    public static void EnviarEmail(String destinatario, String idUsuario, String idAvaliador, String nome, String assunto, string idEvento, string tituloDoEvento, string comentario)
    {
        Usuario usuario = Usuario.findById(new Guid(idUsuario));
        SmtpClient cliente = new SmtpClient("smtp.gmail.com", 587);
        MailMessage email = new MailMessage();
        cliente.EnableSsl = true;
        cliente.Credentials = new NetworkCredential("sistemaeventosceulp@gmail.com", "sistemaeventos1234");
        email.From = new MailAddress("sistemaeventos@gmail.com", "Sistema Eventos - CEULP/ULBRA");
        email.To.Add(destinatario);
        email.Subject = assunto;
        email.IsBodyHtml = true;
        email.Priority = MailPriority.Normal;
        email.Sender = email.From;
        email.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
        email.BodyEncoding = System.Text.Encoding.Default;
        email.Body = "<div style='text-align: center'><div style='text-align: center'><table><tr><h2>Convite para se tornar avaliador do evento<br/>Centro Universitário Luterano de Palmas - CEULP/ULBRA</h2><br/></tr><tr><h3>O evento com o título &lsquo;<font>" + tituloDoEvento + "</font>&rsquo;, <a href='http://localhost:13552/SistemaEventos/Evento/VisualizarEvento.aspx?codigo=" + idEvento + "'>detalhes aqui</a></h3>";
        email.Body += "</tr><tr><h3>Seu login:" + usuario.login + "<h3></tr><tr><h3>Sua senha: 1234</h3></tr><tr><h3>Mensagem personalizada para você:</h3><br/> " + comentario + "</tr>";
        email.Body += "<tr><h3>Para confirmar o ingresso como avaliador do evento, <a href='http://localhost:60150/SistemaEventos/Avaliador/ConfirmarConviteAvaliador.aspx?codigo=" + idAvaliador + "'>clique aqui</a></h3></tr></table></div></div>";
        cliente.Send(email);
    }
    //[WebMethod(EnableSession = true)]
    //public static bool convidar(string id)
    //{
    //    Evento evento = Evento.findEventoById(new Guid(System.Web.HttpContext.Current.Session["Evento"].ToString()));
    //    Usuario usuario = (Usuario)System.Web.HttpContext.Current.Session["Usuario"];
    //    Avaliador avaliador = new Avaliador();
    //    avaliador.aceito = false;
    //    avaliador.idEvento = evento.id;
    //    avaliador.idPessoa = usuario.Pessoa.id;
    //    avaliador.status = false;
    //    avaliador.id = Guid.NewGuid();
    //    if(Avaliador.createAvaliador(avaliador))
    //        EnviarEmail(usuario.email, avaliador.id.ToString(), usuario.Pessoa.nome, "Convite de Avaliador");
    //    return true;
    //}
}